package cn.iocoder.yudao.module.resource.service.category;

import cn.iocoder.yudao.module.resource.dal.dataobject.category.ResourceCategoryDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 资源分类 Service 接口
 *
 * @author 芋道源码
 */
public interface ResourceCategoryService {

    /**
     * 创建资源分类
     *
     * @param categoryDO 分类信息
     * @return 分类ID
     */
    Long createCategory(@Valid ResourceCategoryDO categoryDO);

    /**
     * 更新资源分类
     *
     * @param categoryDO 分类信息
     */
    void updateCategory(@Valid ResourceCategoryDO categoryDO);

    /**
     * 删除资源分类
     *
     * @param id 分类ID
     */
    void deleteCategory(Long id);

    /**
     * 获得资源分类
     *
     * @param id 分类ID
     * @return 资源分类
     */
    ResourceCategoryDO getCategory(Long id);

    /**
     * 获得资源分类列表
     *
     * @return 资源分类列表
     */
    List<ResourceCategoryDO> getCategoryList();

    /**
     * 根据父级ID获得子分类列表
     *
     * @param parentId 父级分类ID
     * @return 子分类列表
     */
    List<ResourceCategoryDO> getCategoryListByParentId(Long parentId);

    /**
     * 根据状态获得分类列表
     *
     * @param status 状态
     * @return 分类列表
     */
    List<ResourceCategoryDO> getCategoryListByStatus(Integer status);

}
